package com.aiju.common.image;

import android.content.Context;
import android.widget.ImageView;

import com.aiju.app.DataProviderManager;


/**
 * @author: 佐为
 * @date: 2017-03-06 10:19
 * @version: V1.0
 * @Description: 图片加载代理类
 *
 * <p>所有的图片操作都通过该代理类去实现；如果要改变图片加载框架，只需要在该类里替换相应的图片加载框架即可，
 * 客户端所有引用的图片操作都不需要修改。</p>
 */
public class AiJuImageLoaderProxy implements AiJuImageLoader {

    /**
     * 代理对象
     */
    private AiJuImageLoader imageLoader;

    /**
     * 定义一个静态私有变量(不初始化，不使用final关键字，
     * 使用volatile保证了多线程访问时instance变量的可见性，
     * 避免了instance初始化时其他变量属性还没赋值完时，被另外线程调用。
     */
    private static volatile AiJuImageLoaderProxy instance;

    public static AiJuImageLoaderProxy getInstance() {
        if (instance == null) {
            synchronized (AiJuImageLoaderProxy.class) {
                if (instance == null) {
                    instance = new AiJuImageLoaderProxy();
                }
            }
        }
        return instance;
    }

    // 定义一个私有构造方法,并赋值图片加载器
    private AiJuImageLoaderProxy() {
        imageLoader = new GlideImageLoad();
        init(DataProviderManager.getContext());
    }


    @Override
    public void init(Context context) {
        imageLoader.init(context);
    }

    @Override
    public void displayImage(String imageUrl, ImageView imageView, int defaultImage) {
        imageLoader.displayImage(imageUrl, imageView, defaultImage);
    }

}
